The present invention relates to data processing used for a full-color printing related equipment such as a printer, a video printer, a scanner or the like, an image processor for forming computer graphic images or a display device such as a monitor. More specifically, the invention relates to a color conversion device and a color conversion method for performing color conversion from image data in the form of a first set of three color data of red, green and blue, or cyan, magenta and yellow, to a second set of three color data of red, green and blue, or cyan, magenta and yellow.
Color conversion in printing is an indispensable technology for compensating deterioration of image quality due to color mixing property due to the fact that the ink is not of a pure color, or the non-linearity (in the hue) of the image-printing, and to output a printed image with a high color reproducibility. Also, in a display device such as a monitor or the like, color conversion is performed in order to output (display) an image having desired color reproducibility in accordance with conditions under which the device is used or the like when an inputted color signal is to be displayed.
Conventionally, two methods have been available for the foregoing color conversion: a table conversion method and a matrix calculation method.
The table conversion method is a method for inputting image data of red, green and blue (which may hereinafter be referred simply as “R, G and B”) and obtaining image data of R, G and B stored beforehand in a memory such as ROM or complementary color data of yellow, magenta and cyan (which may hereinafter be referred simply as “Y, M and C”). Since an arbitrary conversion characteristic can be employed, this table conversion method has an advantageous capability of executing color conversion with good color reproducibility.
However, in a simple structure for storing data for each combination of image data, a large-capacity memory of about 400 Mbit must be used. For example, even in the case of a compression method for memory capacity disclosed in Japanese Patent Kokai Publication No. S63-227181, memory capacity is about 5 Mbit. Therefore, a problem inherent in the table conversion system is that since a large-capacity memory is necessary for each conversion characteristic, it is difficult to implement the method by means of an LSI, and it is also impossible to deal with changes in the condition under which the conversion is carried out.
On the other hand, in the case of the matrix calculation method, for example, for obtaining printing data of Y, M and C from image data of R, G and B, the following formula (11) is used as a basic calculation formula.                               [                                                    Y                                                                    M                                                                    C                                              ]                =                              (            Aij            )                    ⁡                      [                                                            R                                                                              G                                                                              B                                                      ]                                              (        11        )            
Here, Aij represents coefficients, with i=1 to 3, and j=1 to 3.
However, by the simple linear calculation of the formula (11), it is impossible to provide a good conversion characteristic because of a non-linearity of an image-printing or the like.
A method has been proposed for providing a conversion characteristic to improve the foregoing characteristic. This method is disclosed in Japanese Patent Application Kokoku Publication H2-30226, directed to “color correction calculation device, and employs a matrix calculation formula (12) below.                               [                                                    Y                                                                    M                                                                    C                                              ]                =                              (            Dij            )                    ⁡                      [                                                            R                                                                              G                                                                                                                                                B                                                                                                                                      R                          *                          G                                                                                                                                                              G                          *                          B                                                                                                                                                              B                          *                          R                                                                                                                                                              R                          *                          R                                                                                                                                                              G                          *                          G                                                                                                                                                              B                          *                          B                                                                                                                                    N                                                                                                                  ]                                              (        12        )            
Here, N is a constant, i=1 to 3, and j=1 to 10.
In the foregoing formula (12), since image data having a mixture of an achromatic component and a color component is directly used, mutual interference occur in computation. In other words, if one of the coefficients is changed, influence is given to the components or hues other than the target component or hue (the component or hue for which the coefficient is changed). Consequently, a good conversion characteristic cannot be realized.
A color conversion method disclosed in Japanese Patent Application Kokai Publication H7-170404 is a proposed solution to this problem. FIG. 19 is a block circuit diagram showing the color conversion method for conversion of image data of R, G and B into printing data of C, M and Y, disclosed in Japanese Patent Application Kokai Publication H7-170404. In the drawing, reference numeral 100 denotes a complement calculator; 101, an minimum and maximum calculator; 102, a hue data calculator; 103, a polynomial calculator; 104, a matrix calculator; 105, a coefficient generator; and 106, a synthesizer.
Next, the operation will be described. The complement calculator 100 receives image data R, G and B, and outputs complementary color data Ci, Mi and Yi which have been obtained by determining 1's complements.
The determination of 1's complement of an input data can be achieved by subtracting the value of the input data of n bits (n being an integer) from (2n−1). For example, in the case of 8-bit data, the value of the input data is deducted from “255”.
The minimum and maximum calculator 101 outputs a maximum value β and a minimum value α of this complementary color data and an identification code S for indicating, among the six hue data, data which are zero.
The hue data calculator 102 receives the complementary color data Ci, Mi and Yi and the maximum and minimum values β and α, and outputs six hue data r, g, b, y, m and c which are obtained by executing the following subtraction:r=β−Ci, g=β−Mi, b=β−Yi, y=Yi−α, m=Mi−α, and c=Ci−α, Here, among the six hue data, at least two assume the value zero.
The polynomial calculator 103 receives the hue data and the identification code S, selects, from r, g and b, two data Q1 and Q2 which are not zero and, from y, m and c, two data P1 and P2 which are not zero. Based on these data, the polynomial calculator 103 computes polynomial data:T1=P1*P2, T3=Q1*Q2, T2=T1/(P1*P2), and T4=T3/(Q1+Q2), and then outputs the results of the calculation.
The coefficient generator 105 generates calculation coefficients U(Fij) and fixed coefficients U(Fij) for the polynomial data based on information regarding the identification code S. The matrix calculator 104 receives the hue data y, m and c, the polynomial data T1 to T4 and the coefficients U, and outputs a result of the following formula (13) as color ink data C1, M1 and Y1.                               [                                                    C1                                                                    M1                                                                    Y1                                              ]                =                                            (              Eij              )                        ⁡                          [                                                                    c                                                                                        m                                                                                        y                                                              ]                                +                                    (              Fij              )                        ⁡                          [                                                                                          c                      *                      m                                                                                                                                  m                      *                      y                                                                                                                                  y                      *                      c                                                                                                                                  r                      *                      g                                                                                                                                  g                      *                      b                                                                                                                                  b                      *                      r                                                                                                                                  c                      *                                              m                        /                                                  (                                                      c                            +                            m                                                    )                                                                                                                                                                                m                      *                                              y                        /                                                  (                                                      m                            +                            y                                                    )                                                                                                                                                                                y                      *                                              c                        /                                                  (                                                      y                            +                            c                                                    )                                                                                                                                                                                r                      *                                              g                        /                                                  (                                                      r                            +                            g                                                    )                                                                                                                                                                                g                      *                                              b                        /                                                  (                                                      g                            +                            b                                                    )                                                                                                                                                                                b                      *                                              r                        /                                                  (                                                      b                            +                            r                                                    )                                                                                                                                ]                                                          (        13        )            
The synthesizer 106 adds together the color ink data C1, M1 and Y1 and data α which is the achromatic data, and outputs printing data C, M and Y. Accordingly, the following formula (14) is used for obtaining printing data.                               [                                                    C                                                                    M                                                                    Y                                              ]                =                                            (              Eij              )                        ⁡                          [                                                                    c                                                                                        m                                                                                        y                                                              ]                                +                                    (              Fij              )                        ⁡                          [                                                                                          c                      *                      m                                                                                                                                  m                      *                      y                                                                                                                                  y                      *                      c                                                                                                                                  r                      *                      g                                                                                                                                  g                      *                      b                                                                                                                                  b                      *                      r                                                                                                                                  c                      *                                              m                        /                                                  (                                                      c                            +                            m                                                    )                                                                                                                                                                                m                      *                                              y                        /                                                  (                                                      m                            +                            y                                                    )                                                                                                                                                                                y                      *                                              c                        /                                                  (                                                      y                            +                            c                                                    )                                                                                                                                                                                r                      *                                              g                        /                                                  (                                                      r                            +                            g                                                    )                                                                                                                                                                                g                      *                                              b                        /                                                  (                                                      g                            +                            b                                                    )                                                                                                                                                                                b                      *                                              r                        /                                                  (                                                      b                            +                            r                                                    )                                                                                                                                ]                                +                      [                                                            α                                                                              α                                                                              α                                                      ]                                              (        14        )            
The formula (14) shows a general formula for a group of pixels.
FIG. 20A to FIG. 20F, which are schematic diagrams, show relations between six hues of red (R), green (G), blue (B), yellow (Y), cyan (C) and magenta (M), and hue data y, m, c, r, g and b. As shown, each hue data relates to three hues (i.e., extends over the range of three hues). For instance the hue data c relates to the hues g, c and b.
FIG. 21A to FIG. 21F, which are schematic diagrams, show relations between the six hues and product terms y*m, r*g, c*y, g*b, m*c and b*r.
As shown, each of the six product terms y*m, m*c, c*y, r*g, g*b and b*r in the formula (14) relates to only one hue among the six hues of red, blue, green, yellow, cyan and magenta. That is, only y*m is an effective product term for red; m*c for blue; c*y for green; r*g for yellow; g*b for cyan; and b*r for magenta.
Also, each of the six fraction terms y*m/(y+m), m* c/(m+c), c*y/(c+y), r*g/(r+g), g*b/(g+b) and b*r/(b+r) in the formula (14) relates to only one hue among the six hues.
As apparent from the foregoing, according to the color conversion method shown in FIG. 19, by changing coefficients for the product terms and the fraction terms regarding the specific hue, only the target hue can be adjusted without influencing other hues.
Each of the foregoing product terms is determined by a second-order computation for chroma, and each of the fraction terms is determined by a first-order computation for chroma. Thus, by using both of the product terms and the fraction terms, the non-linearity of an image-printing for chroma can be adjusted.
However, this color conversion method cannot satisfy a certain desire. That is, depending on the user's preference, if an area in a color space occupied by specific hues is to be expanded or reduced, e.g., specifically, if expansion or reduction in an area of red in a color space including magenta, red and yellow is desired, the conventional color conversion method of the matrix computation type could not meet such a desire.
The problems of the conventional color conversion method or color conversion device are summarized as follows. Where the color conversion device is of a table conversion method employing a memory such as ROM, a large-capacity memory is required, and a conversion characteristic cannot be flexibly changed. Where the color conversion device is of a type using a matrix calculation method, although it is possible to change only a target hue, it is not possible to vary the inter-hue areas between adjacent ones of the six hues of red, blue, green, yellow, cyan and magenta, and good conversion characteristics cannot be realized throughout the entire color space.